package bt.basics.common.utils;

import cn.hutool.core.util.StrUtil;
import org.apache.commons.lang3.StringUtils;

/**
 * 参数脱敏
 */
public class ParameterDesensitizationUtil {

    private ParameterDesensitizationUtil() {
    }

    /**
     * 手机号码脱敏
     *
     * @param phone
     * @return
     */
    public static String mobileEncrypt(String phone) {
        if (StrUtil.isBlank(phone) || phone.length() != 11) {
            return phone;
        }
        return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
    }

    /**
     * 身份证号脱敏 只保留第一位与最后一位
     *
     * @param id
     * @return
     */
    public static String idEncrypt(String id) {
        if (StrUtil.isBlank(id) || (id.length() < 8)) {
            return id;
        }
        return id.replaceAll("(?<=\\w{1})\\w(?=\\w{1})", "*");
    }

    /**
     * 身份证号脱敏 只保留前四位与后四位
     *
     * @param id
     * @return
     */
    public static String idCardEncrypt(String id) {
        if (StrUtil.isBlank(id) || (id.length() < 8)) {
            return id;
        }
        return id.replaceAll("(?<=\\w{4})\\w(?=\\w{4})", "*");
    }

    /**
     * 姓名脱敏第一位
     *
     * @param fullName
     * @return
     */
    public static String nameEncrypt(String fullName) {
        if (StringUtils.isBlank(fullName)) {
            return null;
        }
        String name = fullName.substring(1);
        StringBuilder builder = new StringBuilder(name);
        return builder.insert(0, "*").toString();
    }

}

